Calendar All Tests
Current file: /home/estudydev/workspace/eStudy_svn/web/ressourcen/classes/class.filemanger.inc.php
Legend: executed not executed dead code

  Coverage
  Classes Methods Lines
Total
0.00 %0.00%
0.00% 0 / 1
0.00 %0.00%
0.00% 0 / 19
0.00 %0.00%
0.00% 0 / 386
 
Filemanager
0.00 %0.00%
0.00% 0 / 1
0.00 %0.00%
0.00% 0 / 19
0.00 %0.00%
0.00% 0 / 386
 public function __construct()
0.00 %0.00%
0.00% 0 / 1
0.00 %0.00%
0.00% 0 / 55
 public function getActiveFolder()
0.00 %0.00%
0.00% 0 / 1
0.00 %0.00%
0.00% 0 / 1
 public function getAction()
0.00 %0.00%
0.00% 0 / 1
0.00 %0.00%
0.00% 0 / 1
 public function getActionID()
0.00 %0.00%
0.00% 0 / 1
0.00 %0.00%
0.00% 0 / 1
 public function getImgFolder()
0.00 %0.00%
0.00% 0 / 1
0.00 %0.00%
0.00% 0 / 1
 public function showTree()
0.00 %0.00%
0.00% 0 / 1
0.00 %0.00%
0.00% 0 / 28
 public function showFiles($statisticView = false)
0.00 %0.00%
0.00% 0 / 1
0.00 %0.00%
0.00% 0 / 19
 public function showFilesForRootFolder($statisticView = false)
0.00 %0.00%
0.00% 0 / 1
0.00 %0.00%
0.00% 0 / 28
 public function runAction($file, $cols, $action = '', $actionID = '', $activeFolder = '')
0.00 %0.00%
0.00% 0 / 1
0.00 %0.00%
0.00% 0 / 57
 private function deleteFolder($folderID)
0.00 %0.00%
0.00% 0 / 1
0.00 %0.00%
0.00% 0 / 21
 private function deleteFile($file)
0.00 %0.00%
0.00% 0 / 1
0.00 %0.00%
0.00% 0 / 5
 private function setRessourceVisibility($ressourceID, $visibilityToSet, $contentRecursive)
0.00 %0.00%
0.00% 0 / 1
0.00 %0.00%
0.00% 0 / 29
 public function createLink($oldOnes = true, $vars = '', $link = '')
0.00 %0.00%
0.00% 0 / 1
0.00 %0.00%
0.00% 0 / 8
 public function downloadFile($fileID)
0.00 %0.00%
0.00% 0 / 1
0.00 %0.00%
0.00% 0 / 28
 public function testDeadFilesInFolder()
0.00 %0.00%
0.00% 0 / 1
0.00 %0.00%
0.00% 0 / 20
 public function openLink($fileID)
0.00 %0.00%
0.00% 0 / 1
0.00 %0.00%
0.00% 0 / 11
 private function replaceSpecialChars($string, $special)
0.00 %0.00%
0.00% 0 / 1
0.00 %0.00%
0.00% 0 / 8
 private function canSeeFile($fileID)
0.00 %0.00%
0.00% 0 / 1
0.00 %0.00%
0.00% 0 / 34
 public function getArchivedFolder($folderID, $recursion = false)
0.00 %0.00%
0.00% 0 / 1
0.00 %0.00%
0.00% 0 / 31


       1                 : <?php                                                                                                                   
       2                 : /*--------------------------------------------------------------------------+                                           
       3                 : This file is part of eStudy.                                                                                            
       4                 : ressourcen/classes/class.filemanager.inc.php                                                                            
       5                 : - Modulgruppe:  File Manager                                                                                            
       6                 : - Beschreibung: Neuer, revolutionaerer File Manager                                                                     
       7                 : - Version:      0.4, 25/09/05                                                                                           
       8                 : - Autor(en):    Thorsten Buss <admin@drstone.de>                                                                        
       9                 : Michael Plefka <freAk0r@gmx.net>                                                                                        
      10                 : +---------------------------------------------------------------------------+                                           
      11                 : This program is free software; you can redistribute it and/or                                                           
      12                 : modify it under the terms of the GNU General Public License                                                             
      13                 : as published by the Free Software Foundation; either version 2                                                          
      14                 : of the License, or any later version.                                                                                   
      15                 : +---------------------------------------------------------------------------+                                           
      16                 : This program is distributed in the hope that it will be useful,                                                         
      17                 : but WITHOUT ANY WARRANTY; without even the implied warranty of                                                          
      18                 : MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                                                           
      19                 : GNU General Public License for more details.                                                                            
      20                 : You should have received a copy of the GNU General Public License                                                       
      21                 : along with this program; if not, write to the Free Software                                                             
      22                 : Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.                                             
      23                 : +--------------------------------------------------------------------------*/                                           
      24                 :                                                                                                                         
      25                 : if (!defined("PATH_TO_ROOT")) {                                                                                         
      26                 :     define("PATH_TO_ROOT", "../../");                                                                                   
      27                 : }                                                                                                                       
      28                 :                                                                                                                         
      29                 : /**                                                                                                                     
      30                 :  * File Manager                                                                                                         
      31                 :  * @package eStudy.Ressourcen                                                                                           
      32                 :  * @version 0.4, 12/08/06                                                                                               
      33                 :  * @author Thorsten Buss <admin@drstone.de>                                                                             
      34                 :  * @author Michael Plefka <freAk0r@gmx.net>                                                                             
      35                 :  * @author Corinna Kropf <corinna_kropf@web.de>                                                                         
      36                 :  */                                                                                                                     
      37                 : /** Einbinden der Formatierungs Klasse */                                                                               
      38                 : require_once (PATH_TO_ROOT."common/classes/class.format.inc.php");                                                      
      39                 : require_once (PATH_TO_ROOT."roleplay/classes/class.roleartefacts.inc.php");                                             
      40                 : require_once (PATH_TO_ROOT."teams/classes/class.teamartefacts.inc.php");                                                
      41                 :                                                                                                                         
      42                 : /** Die Spider-Klasse der Suchmaschine einbinden */                                                                     
      43                 : require_once (PATH_TO_ROOT."suchmaschine/classes/class.spider.inc.php");                                                
      44                 :                                                                                                                         
      45                 : require_once (PATH_TO_ROOT."ressourcen/classes/filemanager/class.folder.inc.php");                                      
      46                 : require_once (PATH_TO_ROOT."ressourcen/classes/filemanager/class.file.inc.php");                                        
      47                 :                                                                                                                         
      48                 : require_once (PATH_TO_ROOT."ressourcen/classes/archiver/class.zipprovider.inc.php");                                    
      49                 : require_once (PATH_TO_ROOT."ressourcen/classes/archiver/class.archiverexception.inc.php");                              
      50                 :                                                                                                                         
      51                 : /**                                                                                                                     
      52                 :  * File Manager                                                                                                         
      53                 :  * @package eStudy.Ressourcen                                                                                           
      54                 :  * @version 0.3, 25/09/05                                                                                               
      55                 :  * @author Thorsten Buss <admin@drstone.de>                                                                             
      56                 :  * @author Michael Plefka <freAk0r@gmx.net>                                                                             
      57                 :  */                                                                                                                     
      58                 : class Filemanager {                                                                                                     
      59                 :     private $mimeTypes = array();                                                                                       
      60                 :     private $imgFolder;                                                                                                 
      61                 :     private $activeFolder;                                                                                              
      62                 :     private $action;                                                                                                    
      63                 :     private $actionID;                                                                                                  
      64                 :     private $visibleFiles;                                                                                              
      65                 :     /**                                                                                                                 
      66                 :      * Konstruktor                                                                                                      
      67                 :      *                                                                                                                  
      68                 :      * @access public                                                                                                   
      69                 :      */                                                                                                                 
      70                 :     public function __construct() {                                                                                     
      71               0 :         global $db, $resDB;                                                                                             
      72               0 :         $this->imgFolder = PATH_TO_ROOT.'ressourcen/icons/';                                                            
      73                 :         // Liste mit Mimetypen f�llen                                                                              
      74               0 :         $this->mimeTypes = array(                                                                                       
      75               0 :             'ez' => 'application/andrew-inset', 'hqx' => 'application/mac-binhex40',                                    
      76               0 :             'cpt' => 'application/mac-compactpro', 'doc' => 'application/msword',                                       
      77               0 :             'bin' => 'application/octet-stream', 'dms' => 'application/octet-stream',                                   
      78               0 :             'lha' => 'application/octet-stream', 'lzh' => 'application/octet-stream',                                   
      79               0 :             'exe' => 'application/octet-stream', 'class' => 'application/octet-stream',                                 
      80               0 :             'so' => 'application/octet-stream', 'dll' => 'application/octet-stream',                                    
      81               0 :             'oda' => 'application/oda', 'pdf' => 'application/pdf', 'ai' => 'application/postscript',                   
      82               0 :             'eps' => 'application/postscript', 'ps' => 'application/postscript',                                        
      83               0 :             'smi' => 'application/smil', 'smil' => 'application/smil', 'mif' => 'application/vnd.mif',                  
      84               0 :             'xls' => 'application/vnd.ms-excel', 'ppt' => 'application/vnd.ms-powerpoint',                              
      85               0 :             'wbxml' => 'application/vnd.wap.wbxml', 'wmlc' => 'application/vnd.wap.wmlc',                               
      86               0 :             'wmlsc' => 'application/vnd.wap.wmlscriptc', 'bcpio' => 'application/x-bcpio',                              
      87               0 :             'vcd' => 'application/x-cdlink', 'pgn' => 'application/x-chess-pgn', 'cpio' => 'application/x-cpio',        
      88               0 :             'csh' => 'application/x-csh', 'dcr' => 'application/x-director', 'dir' => 'application/x-director',         
      89               0 :             'dxr' => 'application/x-director', 'dvi' => 'application/x-dvi', 'spl' => 'application/x-futuresplash',     
      90               0 :             'gtar' => 'application/x-gtar', 'hdf' => 'application/x-hdf', 'js' => 'application/x-javascript',           
      91               0 :             'skp' => 'application/x-koan', 'skd' => 'application/x-koan', 'skt' => 'application/x-koan',                
      92               0 :             'skm' => 'application/x-koan', 'latex' => 'application/x-latex', 'nc' => 'application/x-netcdf',            
      93               0 :             'cdf' => 'application/x-netcdf', 'sh' => 'application/x-sh', 'shar' => 'application/x-shar',                
      94               0 :             'swf' => 'application/x-shockwave-flash', 'sit' => 'application/x-stuffit',                                 
      95               0 :             'sv4cpio' => 'application/x-sv4cpio', 'sv4crc' => 'application/x-sv4crc', 'tar' => 'application/x-tar',     
      96               0 :             'tcl' => 'application/x-tcl', 'tex' => 'application/x-tex', 'texinfo' => 'application/x-texinfo',           
      97               0 :             'texi' => 'application/x-texinfo', 't' => 'application/x-troff', 'tr' => 'application/x-troff',             
      98               0 :             'roff' => 'application/x-troff', 'man' => 'application/x-troff-man', 'me' => 'application/x-troff-me',      
      99               0 :             'ms' => 'application/x-troff-ms', 'ustar' => 'application/x-ustar', 'src' => 'application/x-wais-source',   
     100               0 :             'xhtml' => 'application/xhtml+xml', 'xht' => 'application/xhtml+xml', 'zip' => 'application/zip',           
     101               0 :             'au' => 'audio/basic', 'snd' => 'audio/basic', 'mid' => 'audio/midi', 'midi' => 'audio/midi',               
     102               0 :             'kar' => 'audio/midi', 'mpga' => 'audio/mpeg', 'mp2' => 'audio/mpeg', 'mp3' => 'audio/mpeg',                
     103               0 :             'aif' => 'audio/x-aiff', 'aiff' => 'audio/x-aiff', 'aifc' => 'audio/x-aiff', 'm3u' => 'audio/x-mpegurl',    
     104               0 :             'ram' => 'audio/x-pn-realaudio', 'rm' => 'audio/x-pn-realaudio', 'rpm' => 'audio/x-pn-realaudio-plugin',    
     105               0 :             'ra' => 'audio/x-realaudio', 'wav' => 'audio/x-wav', 'pdb' => 'chemical/x-pdb',                             
     106               0 :             'xyz' => 'chemical/x-xyz', 'bmp' => 'image/bmp', 'gif' => 'image/gif', 'ief' => 'image/ief',                
     107               0 :             'jpeg' => 'image/jpeg', 'jpg' => 'image/jpeg', 'jpe' => 'image/jpeg', 'png' => 'image/png',                 
     108               0 :             'tiff' => 'image/tiff', 'tif' => 'image/tiff', 'djvu' => 'image/vnd.djvu', 'djv' => 'image/vnd.djvu',       
     109               0 :             'wbmp' => 'image/vnd.wap.wbmp', 'ras' => 'image/x-cmu-raster', 'pnm' => 'image/x-portable-anymap',          
     110               0 :             'pbm' => 'image/x-portable-bitmap', 'pgm' => 'image/x-portable-graymap', 'ppm' => 'image/x-portable-pixmap',
     111               0 :             'rgb' => 'image/x-rgb', 'xbm' => 'image/x-xbitmap', 'xpm' => 'image/x-xpixmap',                             
     112               0 :             'xwd' => 'image/x-xwindowdump', 'igs' => 'model/iges', 'iges' => 'model/iges', 'msh' => 'model/mesh',       
     113               0 :             'mesh' => 'model/mesh', 'silo' => 'model/mesh', 'wrl' => 'model/vrml', 'vrml' => 'model/vrml',              
     114               0 :             'css' => 'text/css', 'html' => 'text/html', 'htm' => 'text/html', 'asc' => 'text/plain',                    
     115               0 :             'txt' => 'text/plain', 'rtx' => 'text/richtext', 'rtf' => 'text/rtf', 'sgml' => 'text/sgml',                
     116               0 :             'sgm' => 'text/sgml', 'tsv' => 'text/tab-separated-values', 'wml' => 'text/vnd.wap.wml',                    
     117               0 :             'wmls' => 'text/vnd.wap.wmlscript', 'etx' => 'text/x-setext', 'xsl' => 'text/xml',                          
     118               0 :             'xml' => 'text/xml', 'mpeg' => 'video/mpeg', 'mpg' => 'video/mpeg', 'mpe' => 'video/mpeg',                  
     119               0 :             'qt' => 'video/quicktime', 'mov' => 'video/quicktime', 'mxu' => 'video/vnd.mpegurl',                        
     120               0 :             'avi' => 'video/x-msvideo', 'movie' => 'video/x-sgi-movie', 'ice' => 'x-conference/x-cooltalk',);           
     121               0 :         $this->activeFolder = isset($_GET['activeFolder']) ? $_GET['activeFolder'] : 0;                                 
     122               0 :         $this->action = isset($_GET['action']) ? $_GET['action'] : '';                                                  
     123               0 :         $this->actionID = isset($_GET['actionID']) ? $_GET['actionID'] : 0;                                             
     124               0 :         $this->visibleFiles = $db->get_col("SELECT fileID FROM filevisible WHERE userID='".$_SESSION["userid"]."'");    
     125               0 :         $resDB = new RessourcenDB( $this );                                                                             
     126               0 :     }                                                                                                                   
     127                 :                                                                                                                         
     128                 :     public function getActiveFolder() {                                                                                 
     129               0 :         return $this->activeFolder;                                                                                     
     130                 :     }                                                                                                                   
     131                 :                                                                                                                         
     132                 :     public function getAction() {                                                                                       
     133               0 :         return $this->action;                                                                                           
     134                 :     }                                                                                                                   
     135                 :                                                                                                                         
     136                 :     public function getActionID() {                                                                                     
     137               0 :         return $this->actionID;                                                                                         
     138                 :     }                                                                                                                   
     139                 :                                                                                                                         
     140                 :     public function getImgFolder() {                                                                                    
     141               0 :         return $this->imgFolder;                                                                                        
     142                 :     }                                                                                                                   
     143                 :                                                                                                                         
     144                 :     /**                                                                                                                 
     145                 :      * Erstellt den Verzeichnisbaum und gibt ihn aus                                                                    
     146                 :      *                                                                                                                  
     147                 :      * @access public                                                                                                   
     148                 :      */                                                                                                                 
     149                 :     public function showTree() {                                                                                        
     150               0 :         global $db;                                                                                                     
     151               0 :         $template = new Template( PATH_TO_ROOT . "/ressourcen/templates/foldertree.html" );                             
     152               0 :         $treeEntries = "";                                                                                              
     153                 :                                                                                                                         
     154                 :         //Bestimmung der Anzeigeoptionen fuer spezielle User                                                            
     155                 :         // INIT                                                                                                         
     156               0 :         $course = $_SESSION['course'];                                                                                  
     157                 :         // Setzt Standards fuer die Symbole                                                                             
     158               0 :         $plus = 8;                                                                                                      
     159               0 :         $minus = 6;                                                                                                     
     160               0 :         $join = 3;                                                                                                      
     161               0 :         $bottom = false;                                                                                                
     162                 :         // MostDownloaded Files                                                                                         
     163               0 :         $lastTwenty = new Folder(-2);                                                                                   
     164               0 :         $lastTwenty->setLink("Last 20");                                                                                
     165               0 :         $lastTwenty->setName("Die 20 neuesten Dateien dieses Kurses.");                                                 
     166               0 :         $lastTwenty->setFolderType(13);                                                                                 
     167               0 :         $lastTwenty->setLayerType(5);                                                                                   
     168               0 :         $treeEntries .= $lastTwenty->drawFolder("", false);                                                             
     169                 :                                                                                                                         
     170               0 :         $lastTwenty = new Folder(-1);                                                                                   
     171               0 :         $lastTwenty->setLink("Top 20");                                                                                 
     172               0 :         $lastTwenty->setName("Die 20 beliebtesten Dateien dieses Kurses.");                                             
     173               0 :         $lastTwenty->setFolderType(12);                                                                                 
     174               0 :         $lastTwenty->setLayerType(5);                                                                                   
     175               0 :         $treeEntries .= $lastTwenty->drawFolder("", false);                                                             
     176                 :                                                                                                                         
     177               0 :         $mainFolder = new Folder();                                                                                     
     178               0 :         $mainFolder->setFileManager($this);                                                                             
     179               0 :         if ($return = $mainFolder->printSubFolder()) {                                                                  
     180               0 :             $treeEntries .= $return;                                                                                    
     181               0 :         } else {                                                                                                        
     182               0 :             $treeEntries .= "<span class='tableCell'>Noch keine Ordner angelegt.</span>";                               
     183                 :         }                                                                                                               
     184               0 :         eval ( $template->getTemplate() );                                                                              
     185               0 :     }                                                                                                                   
     186                 :                                                                                                                         
     187                 :     public function showFiles( $statisticView = false ) {                                                               
     188               0 :         global $resDB;                                                                                                  
     189               0 :         if ($this->activeFolder > 0) {                                                                                  
     190               0 :             $folder = $resDB->getFolderByID($this->activeFolder);                                                       
     191                 :             //Nicht berechtigte Usergruppen dürfen den Ordner und seinen Inhalt nicht sehen                            
     192                 :             //oder downloaden, auch nicht durch explizite Angabe des Links                                              
     193               0 :             if (!$folder || !$this->canSeeFile($this->activeFolder))                                                    
     194               0 :             {                                                                                                           
     195               0 :                 return "Keine solche Ressource verfügbar!";                                                            
     196                 :             }                                                                                                           
     197               0 :         } else {                                                                                                        
     198               0 :             if ($this->activeFolder == -1) {                                                                            
     199               0 :                 $folder = new Folder(-1);                                                                               
     200               0 :                 $folder->setFileManager($this);                                                                         
     201               0 :                 $folder->setLink("Top 20");                                                                             
     202               0 :             }                                                                                                           
     203               0 :             if ($this->activeFolder == -2) {                                                                            
     204               0 :                 $folder = new Folder(-2);                                                                               
     205               0 :                 $folder->setFileManager($this);                                                                         
     206               0 :                 $folder->setLink("20 neuesten Ressourcen");                                                             
     207               0 :             }                                                                                                           
     208                 :         }                                                                                                               
     209                 :                                                                                                                         
     210               0 :         $folder->showFiles($statisticView);                                                                             
     211               0 :     }                                                                                                                   
     212                 :                                                                                                                         
     213                 :     public function showFilesForRootFolder( $statisticView = false ) {                                                  
     214               0 :         global $resDB;                                                                                                  
     215               0 :         global $visibleTxt;                                                                                             
     216               0 :         $folder = new Folder();                                                                                         
     217               0 :         $folder->setFileManager($this);                                                                                 
     218               0 :         $folder->setFiles($resDB->getFiles(0));                                                                         
     219               0 :         $folder->loadSubFolder();                                                                                       
     220               0 :         $linkCounter = $fileCounter = $sizeCounter = 0;                                                                 
     221               0 :         foreach($folder->getFiles() as $file) {                                                                         
     222               0 :             if ($file->isFileVisible()) {                                                                               
     223               0 :                 if ($file->getType() == 'link') $linkCounter++;                                                         
     224               0 :                 elseif ($file->getType() == 'file') $fileCounter++;                                                     
     225               0 :                 $sizeCounter = $sizeCounter+$file->getSize();                                                           
     226               0 :             }                                                                                                           
     227               0 :         }                                                                                                               
     228               0 :         $sizeCounter = Format::FilesizeStr($sizeCounter);                                                               
     229               0 :         $folder->setFileCounter($fileCounter);                                                                          
     230               0 :         $folder->setLinkCounter($linkCounter);                                                                          
     231                 :                                                                                                                         
     232                 :         // Root-Ordner ist immer für alle sichtbar                                                                     
     233               0 :         $folder->setVisibleType(1);                                                                                     
     234               0 :         $visible = $visibleTxt[1];                                                                                      
     235                 :                                                                                                                         
     236               0 :         $folderIcons = (!$statisticView) ? $folder->getUserIcons() : "";                                                
     237                 :         // Blaue Ueberschrift                                                                                           
     238               0 :         $folderInfo = ($fileCounter+$linkCounter) .                                                                     
     239               0 :         " Element".(($fileCounter+$linkCounter) != 1 ? "e" : "") .                                                      
     240               0 :         ", Ordner ".$visible;                                                                                           
     241               0 :         echo "<div class='res_filelist_header tableCellHead' style='overflow: hidden;'>                                 
     242                 :             <div class='res_folder_title'><div>Ordner: Hauptordner<span class='res_folderinfo'>                         
     243               0 :             ($folderInfo) -> Size: $sizeCounter</span></div></div>                                                      
     244               0 :             <div class='res_folder_icons'><div>$folderIcons</div></div>";                                               
     245               0 :         echo "</div>";                                                                                                  
     246               0 :     }                                                                                                                   
     247                 :                                                                                                                         
     248                 :     /**                                                                                                                 
     249                 :      * Führt eine Aktion aus, die vom User ausgewählt wurde.                                                          
     250                 :      *                                                                                                                  
     251                 :      * @param object [$file] details der aktuellen Datei, oder folderID                                                 
     252                 :      * @param int [$cols] Anzahl der Spalten der Filelist, wird fuer Colspan benoetigt                                  
     253                 :      * @param string $action Durchzuführende Aktion, fehlt diese Angabe, wird der GET-Parameter verwendet              
     254                 :      * @param int $actionID ID des Objekts, auf das die Aktion angewandt werden soll,                                   
     255                 :      *     fehlt diese Angabe, wird der GET-Parameter verwendet                                                         
     256                 :      * @param int $activeFolder ID des aktuellen Verzeichnisses, fehlt diese Angabe, wird der GET-Parameter verwendet   
     257                 :      * @access public                                                                                                   
     258                 :      */                                                                                                                 
     259                 :     public function runAction($file, $cols, $action = "", $actionID = "", $activeFolder = "") {                         
     260               0 :         global $db;                                                                                                     
     261               0 :         if (empty($activeFolder)) $activeFolder = $_GET['activeFolder'];                                                
     262               0 :         if (empty($action)) $action = isset($_GET['action']) ? $_GET['action'] : '';                                    
     263               0 :         if (empty($actionID)) $actionID = isset($_GET['actionID']) ? $_GET['actionID'] : '';                            
     264               0 :         if (!$action || (is_object($file) && $file->fileID != $actionID)                                                
     265               0 :             || (!is_object($file) && $file != $actionID)) return false;                                                 
     266                 :         switch ($action) {                                                                                              
     267               0 :             case 'delete_trueFile':                                                                                     
     268               0 :                 if ($_SESSION['userid'] == $file->userID                                                                
     269               0 :                     || $_SESSION['usergroup'] == ADMIN                                                                  
     270               0 :                     || ($_SESSION["usergroup"] == DOZENT                                                                
     271               0 :                     && $_SESSION["course"] > 0)) {                                                                      
     272               0 :                         if ($file->type == 'file') { // Wenn Datei dann loeschen                                        
     273               0 :                             $this->deleteFile($file->link);                                                             
     274                 :                             // Datei aus Suchmaschinen-Index löschen                                                   
     275               0 :                             $spider = new Spider();                                                                     
     276               0 :                             $spider->start("remove-file", $file->fileID);                                               
     277               0 :                         }                                                                                               
     278               0 :                         $db->query("DELETE FROM filelist WHERE fileID='$file->fileID'");                                
     279               0 :                         $db->query("DELETE FROM filelog WHERE fileID='$file->fileID'");                                 
     280               0 :                         $db->query("DELETE FROM filevisible WHERE fileID='$file->fileID'");                             
     281               0 :                         RoleArtefacts::deleteItem(RESSOURCE, (int)$file->fileID);                                       
     282               0 :                         TeamArtefacts::deleteItem(RESSOURCE, (int)$file->fileID);                                       
     283               0 :                 } else {                                                                                                
     284               0 :                     return "Zugriff verweigert!";                                                                       
     285                 :                 }                                                                                                       
     286               0 :                 break;                                                                                                  
     287                 :                                                                                                                         
     288               0 :             case 'delete_trueFolder':                                                                                   
     289               0 :                 if ($_SESSION['usergroup'] == ADMIN || ($_SESSION["usergroup"] == DOZENT && $_SESSION["course"] > 0)) { 
     290               0 :                     $this->deleteFolder($activeFolder);                                                                 
     291               0 :                     unset($_GET['activeFolder']);                                                                       
     292               0 :                 } else {                                                                                                
     293               0 :                     return "Zugriff verweigert!";                                                                       
     294                 :                 }                                                                                                       
     295               0 :                 break;                                                                                                  
     296                 :                                                                                                                         
     297                 :                                                                                                                         
     298               0 :             case 'editFolder':                                                                                          
     299               0 :                 break;                                                                                                  
     300                 :                                                                                                                         
     301               0 :             case 'studentWriteFolder':                                                                                  
     302               0 :                 if ($_SESSION['usergroup'] != 2) {                                                                      
     303               0 :                     $writeState = $db->get_var("SELECT student_write FROM filelist WHERE fileID='$actionID' ");         
     304               0 :                     $writeState = ($writeState == 1 ? 0 : 1);                                                           
     305               0 :                     $db->query("UPDATE filelist SET student_write='$writeState' WHERE fileID='$actionID'");             
     306               0 :                 } else {                                                                                                
     307               0 :                     echo "<tr><td class='res_file-extra' colspan='".$cols."'>Zugriff verweigert!</td>";                 
     308                 :                 }                                                                                                       
     309               0 :                 break;                                                                                                  
     310                 :                                                                                                                         
     311               0 :             case 'setVisibilityDocentsOnly':                                                                            
     312               0 :                 if (isset($_GET['mode'])) $this->setRessourceVisibility($actionID, 3, $_GET['mode']);                   
     313               0 :                 else $this->setRessourceVisibility($actionID, 3, 1);                                                    
     314               0 :                 header('Location: filemanager.php?activeFolder='.$activeFolder);                                        
     315               0 :                 break;                                                                                                  
     316                 :                                                                                                                         
     317               0 :             case 'setVisibilityNoStudents':                                                                             
     318               0 :                 if (isset($_GET['mode'])) $this->setRessourceVisibility($actionID, 2, $_GET['mode']);                   
     319               0 :                 else $this->setRessourceVisibility($actionID, 2, 1);                                                    
     320               0 :                 header('Location: filemanager.php?activeFolder='.$activeFolder);                                        
     321               0 :                 break;                                                                                                  
     322                 :                                                                                                                         
     323               0 :             case 'setVisibilityAll':                                                                                    
     324               0 :                 if (isset($_GET['mode'])) $this->setRessourceVisibility($actionID, 1, $_GET['mode']);                   
     325               0 :                 else $this->setRessourceVisibility($actionID, 1, 1);                                                    
     326               0 :                     header('Location: filemanager.php?activeFolder='.$activeFolder);                                    
     327               0 :                 break;                                                                                                  
     328                 :             }                                                                                                           
     329               0 :         }                                                                                                               
     330                 :                                                                                                                         
     331                 :         /**                                                                                                             
     332                 :          * Löscht einen Ordner mit allem Inhalt und Unterordnern                                                       
     333                 :          *                                                                                                              
     334                 :          * @param int [$folderID] ID des zu loeschenden Ordners                                                         
     335                 :          * @return boolean Erfolgswert                                                                                  
     336                 :          * @access private                                                                                              
     337                 :          */                                                                                                             
     338                 :         private function deleteFolder($folderID) {                                                                      
     339               0 :             global $db, $EZSQL_ERROR;                                                                                   
     340               0 :             $folders = $db->get_results("SELECT type, fileID, link FROM filelist WHERE parent_object='$folderID'");     
     341               0 :             if ($folders) {                                                                                             
     342               0 :                 foreach($folders as $folder) {                                                                          
     343               0 :                     if ($folder->type == "file") {                                                                      
     344               0 :                         $this->deleteFile($folder->link);                                                               
     345                 :                         // Datei aus Suchmaschinen-Index löschen                                                       
     346               0 :                         $spider = new Spider();                                                                         
     347               0 :                         $spider->start("remove-file", $folder->fileID);                                                 
     348               0 :                     }                                                                                                   
     349               0 :                     $this->deleteFolder($folder->fileID);                                                               
     350               0 :                 }                                                                                                       
     351               0 :             }                                                                                                           
     352               0 :             $errorCount = count($EZSQL_ERROR);                                                                          
     353               0 :             $db->query("DELETE FROM filelist WHERE fileID='$folderID'");                                                
     354               0 :             $db->query("DELETE FROM filelog WHERE fileID='$folderID'");                                                 
     355               0 :             $db->query("DELETE FROM filetreelayout WHERE folderID='$folderID'");                                        
     356               0 :             $db->query("DELETE FROM filevisible WHERE fileID='$folderID'");                                             
     357               0 :             RoleArtefacts::deleteItem(RESSOURCE, (int)$folderID);                                                       
     358               0 :             TeamArtefacts::deleteItem(RESSOURCE, (int)$folderID);                                                       
     359               0 :             if (count($EZSQL_ERROR) > $errorCount) return false;                                                        
     360               0 :             return true;                                                                                                
     361                 :         }                                                                                                               
     362                 :         /**                                                                                                             
     363                 :          * Löscht eine Datei physikalisch                                                                              
     364                 :          *                                                                                                              
     365                 :          * @param string [$file] Dateiname der Datei                                                                    
     366                 :          * @return boolean Erfolgswert                                                                                  
     367                 :          * @access private                                                                                              
     368                 :          */                                                                                                             
     369                 :         private function deleteFile($file) {                                                                            
     370               0 :             global $settings;                                                                                           
     371               0 :             $basedir = PATH_TO_ROOT.$settings["upload_path"].'filemanager/courseID/'.$_SESSION['course'];               
     372               0 :             if (!file_exists($basedir."/".$file)) return false;                                                         
     373               0 :             if (!unlink($basedir."/".$file)) return false;                                                              
     374               0 :             return true;                                                                                                
     375                 :         }                                                                                                               
     376                 :         /*                                                                                                              
     377                 :         * Ändert die Sichtbarkeit der Ressource (Order, Datei oder Link)                                               
     378                 :         *                                                                                                               
     379                 :         * @param string [$ressourceID] Name der Ressource                                                               
     380                 :         * @param int [$visibilityToSet] neuer Wert für die Sichbarkeit der Ressource                                   
     381                 :         * @param int [$contentRecursive]                                                                                
     382                 :         *     1 wenn nur die Ressource geändert werden soll (Ordner werden dann wie Dateien und Links behandelt)       
     383                 :         *     2 wenn bei einem Ordner nur der Inhalt (rekursiv) geändert werden soll,                                  
     384                 :         *     3 wenn Ordner und Inhalt (rekursiv) geändert werden sollen,                                              
     385                 :         * @return boolean Erfolgswert                                                                                   
     386                 :         * @access private                                                                                               
     387                 :         */                                                                                                              
     388                 :         private function setRessourceVisibility($ressourceID, $visibilityToSet, $contentRecursive) {                    
     389               0 :             global $db, $EZSQL_ERROR;                                                                                   
     390                 :             // Momentane Sichtbarkeit der Ressource aus der DB auslesen                                                 
     391               0 :             $visible = $db->get_var("SELECT visible_type FROM filelist WHERE fileID='$ressourceID'");                   
     392                 :             // Ressource hat schon die gewünschte Sichtbarkeit                                                         
     393               0 :             if ($visible == $visibilityToSet && $contentRecursive == 1) return true;                                    
     394                 :             // Wenn die Ressource ein Ordner ist und dessen Sichtbarkeit eingeschränkt werden soll:                    
     395                 :             //         Sichtbarkeit untergeordneter Ordner, Dateien und Links ändern                                   
     396               0 :             if ($contentRecursive > 1) {                                                                                
     397               0 :                 $ressources = $db->get_results(                                                                         
     398               0 :                     "SELECT type, fileID, link , visible_type FROM filelist WHERE parent_object='$ressourceID'"         
     399               0 :                 );                                                                                                      
     400               0 :                 if ($ressources != null) {                                                                              
     401                 :                     // Sichtbarkeit der untergeordneten Ressource nur ändern,                                          
     402                 :                     // wenn sie eingeschränkt werden soll; Alle Unterordner durchgehen                                 
     403               0 :                     foreach($ressources as $ressource) {                                                                
     404                 :                         //für alle Dateien und Links in dem Ordner                                                     
     405               0 :                         if ($ressource->type == "file") {                                                               
     406               0 :                             $this->setRessourceVisibility($ressource->link, $visibilityToSet, $contentRecursive);       
     407               0 :                         }                                                                                               
     408                 :                         //für den Ordner selbst, alle Unterordner und deren Inhalt                                     
     409               0 :                         if ($contentRecursive == 2) {                                                                   
     410               0 :                             $this->setRessourceVisibility($ressource->fileID, $visibilityToSet, 4);                     
     411               0 :                         } else {                                                                                        
     412               0 :                             $this->setRessourceVisibility($ressource->fileID, $visibilityToSet, $contentRecursive);     
     413                 :                         }                                                                                               
     414               0 :                     }                                                                                                   
     415               0 :                 }                                                                                                       
     416               0 :             }                                                                                                           
     417                 :             //Ressource mit ID $ressourceID in der DB ändern                                                           
     418               0 :             if ($contentRecursive != 2) {                                                                               
     419                 :                 // Sichtbarkeitswerte für die Ressource auf der Datenbank updaten                                      
     420               0 :                 $errorCount = count($EZSQL_ERROR);                                                                      
     421               0 :                 $db->query("UPDATE filelist SET visible_type ='$visibilityToSet' WHERE fileID='$ressourceID'");         
     422               0 :                 $visible = $db->get_var("SELECT visible_type FROM filelist WHERE fileID='$ressourceID'");               
     423               0 :                 if (count($EZSQL_ERROR) > $errorCount) return false;                                                    
     424               0 :                 if ($contentRecursive > 2) {                                                                            
     425               0 :                     $db->query("DELETE FROM filevisible WHERE fileID='".$ressourceID."'");                              
     426               0 :                 }                                                                                                       
     427               0 :             }                                                                                                           
     428               0 :             return true;                                                                                                
     429                 :         }                                                                                                               
     430                 :         /**                                                                                                             
     431                 :          * Erstellt einen Link mit GET Variablen                                                                        
     432                 :          *                                                                                                              
     433                 :          * @param bool [$oldOnes] Gibt an ob bisher existierende GET Variablen                                          
     434                 :          *     mit in den Link eingebaut werden.                                                                        
     435                 :          * @param array [$vars] Ein Array (Aufbau wie $_GET) mit den Variabeln                                          
     436                 :          *     und WErten die in den Link eingebaut werden                                                              
     437                 :          * @param string [$link] Falls nicht PHP_SELF das Ziel ist muss hier der                                        
     438                 :          *     Dateiname angegeben werden.                                                                              
     439                 :          * @return string Zusammengesetzter Link                                                                        
     440                 :          * @access public                                                                                               
     441                 :          */                                                                                                             
     442                 :         public function createLink($oldOnes = true, $vars = '', $link = '') {                                           
     443               0 :             if ($link == "") $link = PATH_TO_ROOT.SCRIPT_NAME;                                                          
     444               0 :             if (!is_array($vars)) $vars = $_GET;                                                                        
     445               0 :             elseif (count($_GET) > 0 && $oldOnes) $vars = array_merge($_GET, $vars);                                    
     446               0 :             foreach($vars as $getVarName => $getVarValue) {                                                             
     447               0 :                 if (trim($getVarValue) != "" && isset($getVarValue))                                                    
     448               0 :                     $getVars[] = urlencode($getVarName) ."=".urlencode($getVarValue);                                   
     449               0 :             }                                                                                                           
     450               0 :             return $link."?".implode($getVars, "&amp;");                                                                
     451                 :         }                                                                                                               
     452                 :         /**                                                                                                             
     453                 :          * Schickt eine auf dem Server liegende Datei an den Browser                                                    
     454                 :          *                                                                                                              
     455                 :          * @param int [$fileID] Die ID des zu sendenden Files                                                           
     456                 :          * @return string Zusammengesetzter Link                                                                        
     457                 :          * @access public                                                                                               
     458                 :          */                                                                                                             
     459                 :         public function downloadFile($fileID) {                                                                         
     460               0 :             global $settings, $db;                                                                                      
     461                 :             // Dateiname generieren                                                                                     
     462               0 :             $file = $db->get_row(                                                                                       
     463                 :                 "SELECT name, link, size, extension, orig_filename,                                                     
     464               0 :                 courseID FROM filelist WHERE fileID='".$fileID."'"                                                      
     465               0 :             );                                                                                                          
     466               0 :             if (!$this->canSeeFile($fileID)) {                                                                          
     467               0 :                 return "Sie haben keine Berechtigung diese Datei herunterzuladen!";                                     
     468                 :             }                                                                                                           
     469                 :             // Verzeichnis dass die hochgeladenen Dateien enthält                                                      
     470               0 :             $basedir = PATH_TO_ROOT.$settings["upload_path"].'filemanager/courseID/'.$file->courseID;                   
     471                 :                                                                                                                         
     472                 :             //die datei wie sie auf dem server liegt (der dateiname ist verschlüsselt)                                 
     473               0 :             $filename = sprintf("%s/%s", $basedir, $file->link);                                                        
     474               0 :             if (!file_exists($filename))                                                                                
     475               0 :                 return "Datei nicht vorhanden, bitte wenden Sie sich an den Administrator!";                            
     476                 :             //den mimetypen bestimmen                                                                                   
     477               0 :             if (isset($this->mimeTypes[$file->extension])) {                                                            
     478               0 :                 $mimetype = $this->mimeTypes[$file->extension];                                                         
     479               0 :             } else {                                                                                                    
     480               0 :                 $mimetype = "application/octet-stream";                                                                 
     481                 :             }                                                                                                           
     482                 :             // Zugriff wird geloggt                                                                                     
     483               0 :             $time = time();                                                                                             
     484               0 :             $db->query(                                                                                                 
     485                 :                    "INSERT INTO filelog (userID, fileID, date) VALUES ('".                                              
     486               0 :                 $_SESSION['userid']."','$fileID','$time')"                                                              
     487               0 :             );                                                                                                          
     488               0 :             $db->query("UPDATE filelist SET counter=counter+1 WHERE fileID='$fileID'");                                 
     489                 :             // Output-Buffering abschalten                                                                              
     490               0 :             ob_end_clean();                                                                                             
     491                 :             // HTTP Header Informationen senden, die ersten beiden sind wichtig für den IE                             
     492               0 :             header("Pragma: private");                                                                                  
     493               0 :             header("Cache-control: private, must-revalidate");                                                          
     494               0 :             header("Content-Type: $mimetype");                                                                          
     495               0 :             header("Content-Disposition: attachment; filename=\"".$file->orig_filename."\"");                           
     496               0 :             header("Content-Transfer-Encoding: binary");                                                                
     497               0 :             header("Content-Length: ".$file->size);                                                                     
     498                 :             //die datei senden                                                                                          
     499               0 :             readfile($filename);                                                                                        
     500               0 :             return "";                                                                                                  
     501                 :         }                                                                                                               
     502                 :                                                                                                                         
     503                 :         /**                                                                                                             
     504                 :          * FW                                                                                                           
     505                 :          * Prüft ob eine Datei in der DB auch auf                                                                      
     506                 :          * der Platte vorhanden ist.                                                                                    
     507                 :          *                                                                                                              
     508                 :          * @param                                                                                                       
     509                 :          * @access public                                                                                               
     510                 :          */                                                                                                             
     511                 :         public function testDeadFilesInFolder() {                                                                       
     512               0 :              global $settings, $db;                                                                                     
     513               0 :              $deadFiles = array();                                                                                      
     514                 :             // Verzeichnis dass die hochgeladenen Dateien enthält                                                      
     515               0 :             $uploadDir = PATH_TO_ROOT.$settings["upload_path"].'filemanager/courseID/'.$_SESSION['course'];             
     516               0 :             $filesInCourseDb = $db->get_results(                                                                        
     517                 :                                 "SELECT link FROM filelist WHERE courseID='"                                            
     518               0 :                                 .$_SESSION['course']."' and type = 'file'"                                              
     519               0 :                                 );                                                                                      
     520                 :                                                                                                                         
     521               0 :             foreach($filesInCourseDb as $fileCourse) {                                                                  
     522               0 :                 $filesInDB[] = (string)$fileCourse->link;                                                               
     523               0 :             }                                                                                                           
     524                 :                                                                                                                         
     525                 :            //Einlesen der Dateien in Array                                                                              
     526               0 :             if($uploadOpen=opendir($uploadDir))    {                                                                    
     527               0 :              while($file=readdir($uploadOpen))     {                                                                    
     528               0 :               if ($file != "." && $file != ".." && !is_dir($uploadDir ."/".  $file))  {                                 
     529               0 :                   if(!(in_array($file,$filesInDB))){                                                                    
     530               0 :                          $deadFiles[]=$file;                                                                            
     531               0 :                      }                                                                                                  
     532               0 :               }                                                                                                         
     533               0 :              }                                                                                                          
     534               0 :             closedir($uploadOpen);                                                                                      
     535               0 :             }                                                                                                           
     536               0 :              return $deadFiles;                                                                                         
     537                 :                                                                                                                         
     538                 :         }                                                                                                               
     539                 :         /**                                                                                                             
     540                 :          * Öffnet einen Link in einem neuen Fenster (Gegenstück zu downloadFile für                                  
     541                 :          * Links)                                                                                                       
     542                 :          *                                                                                                              
     543                 :          * @param int [$fileID] ID des zu öffnenden Links                                                              
     544                 :          * @access private                                                                                              
     545                 :          */                                                                                                             
     546                 :         public function openLink($fileID) {                                                                             
     547               0 :             global $db;                                                                                                 
     548               0 :             if (!$this->canSeeFile($fileID)) {                                                                          
     549               0 :                 return "Sie haben keine Berechtigung diesen Link zu &ouml;ffnen!";                                      
     550                 :             }                                                                                                           
     551                 :             // Ziel Url ermitteln                                                                                       
     552               0 :             $link = $db->get_var("SELECT link FROM filelist WHERE fileID='".$fileID."'");                               
     553                 :             // Zugriff wird geloggt                                                                                     
     554               0 :             $time = time();                                                                                             
     555               0 :             $db->query(                                                                                                 
     556                 :                 "INSERT INTO filelog (userID, fileID, date) VALUES ('".                                                 
     557               0 :                 $_SESSION['userid']."','$fileID','$time')"                                                              
     558               0 :             );                                                                                                          
     559               0 :             $db->query("UPDATE filelist SET counter=counter+1 WHERE fileID='$fileID'");                                 
     560               0 :             if (Utilities::validateURL($link)) header("Location: ".$link);                                              
     561               0 :             exit();                                                                                                     
     562                 :         }                                                                                                               
     563                 :         /**                                                                                                             
     564                 :          * Ersetzt bestimmte Zeichen mit einem _                                                                        
     565                 :          *                                                                                                              
     566                 :          * @param string [$string] String in dem Zeichen ersetzt werden sollen                                          
     567                 :          * @param string [$special] Ein String mit den SonderZeichen, die ersetzt                                       
     568                 :          * werden sollen                                                                                                
     569                 :          * @return string String mit ersetzten Zeichen                                                                  
     570                 :          * @access private                                                                                              
     571                 :          */                                                                                                             
     572                 :         private function replaceSpecialChars($string, $special) {                                                       
     573               0 :             $strlen = strlen($special);                                                                                 
     574               0 :             for ($i = 0 ; $i <= $strlen ; $i++) {                                                                       
     575               0 :                 $char = substr($special, $i, 1);                                                                        
     576               0 :                 $string = str_replace($char, "_", $string);                                                             
     577               0 :                 $string = str_replace("__", "_", $string);                                                              
     578               0 :             }                                                                                                           
     579               0 :             $string = str_replace("__", "_", $string);                                                                  
     580               0 :             return $string;                                                                                             
     581                 :         }                                                                                                               
     582                 :         /**                                                                                                             
     583                 :          * Ermittelt Sichtbarkeits-/Downloadrechte von Userid auf fileId                                                
     584                 :          *                                                                                                              
     585                 :          * @param int [$fileID] Die ID des files (folder/link/file) zum Rechte ermitteln                                
     586                 :          * @return bool Erfolgswert                                                                                     
     587                 :          * @access private                                                                                              
     588                 :          */                                                                                                             
     589                 :         private function canSeeFile($fileID) {                                                                          
     590                 :             /* Sehen kann man wenn:                                                                                     
     591                 :             - Man Admin/Dozent ist                                                                                      
     592                 :             - Man Besitzer ist                                                                                          
     593                 :             - Tutor und visibleMode=2                                                                                   
     594                 :             - visibleMode=1                                                                                             
     595                 :             - visibleMode aller übergeordneten Ordner != 1                                                             
     596                 :             - Explizite User-Berechtigungen vorliegen */                                                                
     597               0 :             global $db;                                                                                                 
     598                 :             // Admin oder Dozent                                                                                        
     599               0 :             if ($_SESSION['usergroup'] == ADMIN || $_SESSION['usergroup'] == DOZENT) return true;                       
     600               0 :             $file = $db->get_row(                                                                                       
     601               0 :                 "SELECT courseID, userID, visible_type, parent_object FROM filelist WHERE fileID='$fileID'"             
     602               0 :             );                                                                                                          
     603                 :             // Es gibt keine solche Ressource                                                                           
     604               0 :             if (!isset($file)) return false;                                                                            
     605                 :             // Wenn falscher Kurs gleich raus                                                                           
     606               0 :             if (is_null($file) || $_SESSION['course'] != $file->courseID && $file->courseID != 0) return false;         
     607                 :             // Alle duerfen sehen                                                                                       
     608               0 :             if ($file->visible_type == 1) {                                                                             
     609                 :                 // nur wenn die Datei nicht in einem für Studenten nicht freigegebenen (Über-)Ordner liegt            
     610               0 :                 $parentID = $file->parent_object;                                                                       
     611               0 :                 while ($parentID != 0) {                                                                                
     612               0 :                     $parentFolder = $db->get_row(                                                                       
     613               0 :                         "SELECT visible_type, parent_object FROM filelist WHERE fileID='$parentID'"                     
     614               0 :                     );                                                                                                  
     615               0 :                     if ($parentFolder->visible_type > 1) return false;                                                  
     616               0 :                     $parentID = $parentFolder->parent_object;                                                           
     617               0 :                 }                                                                                                       
     618               0 :                 return true;                                                                                            
     619                 :             }                                                                                                           
     620                 :             // Tutor                                                                                                    
     621               0 :             if (isset($_SESSION['assistent']) && $file->visible_type == 2) {                                            
     622                 :                 // nur wenn die Datei nicht in einem nur für Dozenten freigegebenen (Über-)Ordner liegt               
     623               0 :                 $parentID = $file->parent_object;                                                                       
     624               0 :                 while ($parentID != 0) {                                                                                
     625               0 :                     $parentFolder = $db->get_row(                                                                       
     626               0 :                         "SELECT visible_type, parent_object FROM filelist WHERE fileID='$parentID'"                     
     627               0 :                     );                                                                                                  
     628               0 :                     if ($parentFolder->visible_type == 3) return false;                                                 
     629               0 :                     $parentID = $parentFolder->parent_object;                                                           
     630               0 :                 }                                                                                                       
     631               0 :                 return true;                                                                                            
     632                 :             }                                                                                                           
     633                 :             // Besitzer                                                                                                 
     634               0 :             if ($_SESSION['userid'] == $file->userID) return true;                                                      
     635                 :             // Einzelberechtigung (gilt nicht, falls ein übergeordneter Ordner eine geringere Sichtbarkeit hat!!)      
     636               0 :             if ($db->get_var(                                                                                           
     637               0 :                 "SELECT count(*) FROM filevisible WHERE fileID='                                                        
     638               0 :                 $fileID' AND userID='".$_SESSION['userid']."'"                                                          
     639               0 :                 ) > 0) {                                                                                                
     640               0 :                 return true;                                                                                            
     641                 :             }                                                                                                           
     642               0 :             return false;                                                                                               
     643                 :         }                                                                                                               
     644                 :                                                                                                                         
     645                 :         /**                                                                                                             
     646                 :          * Deliver an archive of the given folder.                                                                      
     647                 :          *                                                                                                              
     648                 :          * Depending on the configuration,                                                                              
     649                 :          * it is possible that a recursive download archive is generated.                                               
     650                 :          *                                                                                                              
     651                 :          * @param Integer $folderID                                                                                     
     652                 :          * @param Boolean $recursion (Default = False)                                                                  
     653                 :          * @return String                                                                                               
     654                 :          */                                                                                                             
     655                 :         public function getArchivedFolder($folderID, $recursion = FALSE) {                                              
     656               0 :             global $resDB;                                                                                              
     657               0 :             global $settings;                                                                                           
     658                 :                                                                                                                         
     659               0 :             if ($folderID > 0) {                                                                                        
     660               0 :                 $folder = $resDB->getFolderByID($folderID);                                                             
     661                 :                                                                                                                         
     662               0 :                 if (!$folder instanceof Folder) {                                                                       
     663               0 :                     return "Ordner mit der ID ".$folderID." wurde nicht gefunden.";                                     
     664                 :                 }                                                                                                       
     665               0 :             } elseif ($folderID == -2) {                                                                                
     666               0 :                 $folder = new Folder(-2);                                                                               
     667               0 :                 $folder->setLink("Last 20");                                                                            
     668               0 :                 $folder->setCourseID($_SESSION['course']);                                                              
     669               0 :                 $folder->setDescription("Die 20 neuesten Dateien dieses Kurses.");                                      
     670               0 :             } elseif ($folderID == -1) {                                                                                
     671               0 :                 $folder = new Folder(-1);                                                                               
     672               0 :                 $folder->setLink("Top 20");                                                                             
     673               0 :                 $folder->setCourseID($_SESSION['course']);                                                              
     674               0 :                 $folder->setDescription("Die 20 beliebtesten Dateien dieses Kurses.");                                  
     675               0 :             } elseif ($folderID == 0) {                                                                                 
     676               0 :                 $folder = new Folder(0);                                                                                
     677               0 :                 $folder->setLink("Hauptordner");                                                                        
     678               0 :                 $folder->setCourseID($_SESSION['course']);                                                              
     679               0 :                 $folder->setDescription("Alle Dateien dieses Kurses.");                                                 
     680               0 :             } else {                                                                                                    
     681               0 :                 return "Ordner mit der ID ".$folderID." wurde nicht gefunden.";                                         
     682                 :             }                                                                                                           
     683                 :                                                                                                                         
     684                 :             try {                                                                                                       
     685               0 :                 if (ZipProvider::checkArchiveSize($folder, $recursion) <=                                               
     686               0 :                      $settings['filemanager_archive_max_filesize']*1024*1024) {                                         
     687                 :                                                                                                                         
     688               0 :                     $zipProvider = new ZipProvider($folder, $recursion);                                                
     689               0 :                     $zipProvider->createArchive();                                                                      
     690               0 :                     $zipProvider->sendArchive();                                                                        
     691               0 :                 }                                                                                                       
     692               0 :             } catch (ArchiverException $e) {                                                                            
     693                 :                 return $e->getMessage();                                                                                
     694                 :             }                                                                                                           
     695                 :                                                                                                                         
     696               0 :             return "";                                                                                                  
     697                 :         }                                                                                                               
     698                 :     }                                                                                                                   

Generated by PHPUnit 3.2.21 and Xdebug 2.0.3 at Thu Nov 26 17:01:15 CET 2009.